{{tag>Xenial programmation BROUILLON}}

----

====== SDL : Simple DirectMedia Layer ======


La [[http://www.libsdl.org/|SDL]] //(Simple DirectMedia Layer)// est une [[wpfr>Bibliothèque logicielle]] permettant de développer des programmes gérant le son, la vidéo, le clavier, la souris et le lecteur CD avec plusieurs langages (la liste complète est disponible sur le [[http://www.libsdl.org/|site officiel]].
Elle a notamment été utilisée pour le portage du jeu [[wpfr>Civilization|Civilization II]] sous Linux et le jeu [[wpfr>Doom]] sous BeOS.



===== Pour une utilisation simple =====

[[:tutoriel:comment_installer_un_paquet|Installez le paquet]] **[[apt>libsdl1.2debian]]**.

(voir plus bas pour une utilisation simple des librairies complémentaires)

===== Installation complète  =====

Utiliser la commande suivante pour installer SDL2 avec toutes ces libraires:
<code>sudo apt install libsdl2-2.0-0 libsdl2-gfx-1.0-0 libsdl2-image-2.0-0 libsdl2-mixer-2.0-0 libsdl2-net-2.0-0 libsdl2-ttf-2.0-0</code>

===== Installer la version pour les développeurs =====


[[:tutoriel:comment_installer_un_paquet|Installez le paquet]]  **[[apt>libsdl2-dev]]** pour utiliser SDL2 mais le paquet **[[apt>libsdl1.2-dev ]]** est toujours utilisable.



===== Compiler un programme en C/SDL avec GCC ou g++=====

Placez-vous dans le répertoire où sont enregistrées vos sources. L'installation d'SDL fourni un petit script sdl-config qui, appelé avec les paramètres --cflags ou --libs, renseigne correctement le compilateur. tapez alors :

  gcc -o executable fichier1.c fichier2.c fichier3.c ...  `sdl-config --cflags --libs` 
gcc peut etre remplacé par g++ si vous programmez en C++.

<note>la commande `sdl-config --cflags --libs` est substituée pour donner
**-I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib/x86_64-linux-gnu -lSDL**

Si vous voulez utiliser SDL2, vous devriez mettre -lSDL2 à la fin de votre commande ce qui donnerait :

<code>gcc -o executable *.c -I/usr/include/SDL -D_GNU_SOURCE=1 -D_REENTRANT -L/usr/lib/x86_64-linux-gnu -lSDL2</code>
</note>

Pour compiler plusieurs fichiers séparément puis les linker, utilisez :
  gcc -c -Wall -Wextra main.c `sdl-config --cflags`
  gcc -c -Wall -Wextra fichier1.c `sdl-config --cflags`
  gcc -o executable main.o fichier1.o `sdl-config --libs`

**Si vous avez installé le paquet libsdl2-dev et que vous programmez avec SDL2, utilisez sdl2-config au lieu de sdl-config.**

Une fois la compilation terminée, vous pourrez lancer votre programme avec :

  PATH=.:$PATH
  executable
  
Ou, plus simplement, sans modifier la variable PATH, avec :

  ./executable

===== Bibliothèques complémentaires =====

Pour installer SDL_image, SDL_ttf et SDL_mixer: [[:tutoriel:comment_installer_un_paquet|installez les paquets]] **[[apt://libsdl-image1.2,libsdl-image1.2-dev,libsdl-ttf2.0-0,libsdl-ttf2.0-dev,libsdl-mixer1.2,libsdl-mixer1.2-dev|libsdl-image1.2 ,libsdl-image1.2-dev ,libsdl-ttf2.0-0 ,libsdl-ttf2.0-dev ,libsdl-mixer1.2 ,libsdl-mixer1.2-dev]]**.

Les options respectives à ajouter à la compilation avec GCC (après **-lSDLmain -lSDL**) sont :
<code>
-lSDL_image # pour SDL_image
-lSDL_ttf # pour SDL_ttf
-lSDL_mixer # pour SDL_mixer
</code>

===== Pour aller plus loin =====

Si vous savez déjà programmer en C/C++ et que vous voulez apprendre à utiliser la SDL pour vos programmes, il y a de très bons tutoriels :
  * [[http://fr.openclassrooms.com/|OpenClassrooms]]
  * [[http://c.developpez.com/|Développez.com]]
  * [[http://www.gnurou.org/writing/linuxmag/sdl|gnurou.org]]

Voir aussi, si pour préférez [[:python]], la librairie [[wpfr>pygame]]

----

//Contributeurs : [[:utilisateurs:lost-in-the-shell]], [[:utilisateurs:sully]].//